┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ ASK3/codeA対応 アクセサリシリーズ8 ┃ ┃ 「ASKDen」 ┃ ┃ V2.02 ┃ ┃ Copyright (C) 1998-99 by AIG-Soft ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ これは何? ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ASKDenはASK Ver.3/codeA用のアクセサリです。 電卓 というより 式評価 が出来ます。 要するに、普通の算術式がそのまま記述出来、それが計算されるということです。 さらに、式の中に変数が使えるので「同じ値を何度も書く」という手間も省けて あぁら、こりゃ便利!です(本当か?)。 **注意** ASKDen V2.02はWindows95/NT上のX68エミュレーター"EX68"(yamama氏)上では 組み込めません。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 組み込み法 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ASKDenはコマンドラインからの起動で常駐します。 常駐サイズは約7.3K+変数領域(>=4.5K)で、変数領域の確保サイズによって変わります。 ASKDen [/H /R /Wsize /M /Smode /I整数式ファイル /F実数式ファイル] 式ファイルとは、起動毎に読み出され評価される式や変数定義を記述したファイルです。 (くわしくは後述。) 「例」ASKDen /W1k /Ia:¥sys¥_1i CONFIG.SYSのPROGRAM=での組み込みも可能です(DEVICE=は不可)。 「例」PROGRAM = A:¥SYS¥ASKDen.X /W1024 /Fa:¥sys¥_1f ASKDenはアクセサリを2つ使います。 ASKのアクセサリの総数は通常は10までです。 FDS氏のcodeA.sys v0.05以降なら32まで登録出来ます。 ASKの設定に関しては、日本語入力/辞書ユティリティーのユーザーズマニュアルも 参照してください なお、アクセサリ機能はASKのV3または互換ドライバーのcodeA.sysの機能なので、 ASK V2以前では使えません。 もちろん、FIXER等の他のかな漢字変換フロントプロセッサでも使えません。 なお、利用にはFLOAT?.X(互換品)が必要です。 (実数演算にて全面的にそれを利用しています。) ┌───────────────────────────────────┐ │オプション (-,/、英大文字小文字どちらでもOK) │ └───────────────────────────────────┘ /H 辞書リスト読み込みワークを高位メモリーから確保します。 高位メモリーとは実装メモリーの後ろからのメモリーのことで、 Xellent30や060Turboなどの持つHighメモリーではありません。 デフォルトは、ASKDenの真後ろにワークエリアを確保します。 /R 常駐を解除します。 /Ifname 整数時の式ファイルを指定します /Ffname 実数時の式ファイルを指定します 式ファイルとは、式や変数定義を記述したファイルです(くわしくは後述)。 ただし、このオプションで指定する式ファイルは定数定義に限定されます。 (この式ファイルで定義された変数は定数扱いとなり、後の再定義は出来ません。) 実際にこの式ファイルが読み込まれるのは、一番最初の起動時、変数がクリアされた直後 の起動時、ファイルが変更された時です。 指定する場合は、拡張子も含め存在位置をフルパス名で指定します。 指定がない場合には式ファイルは読み込まれません。 /Wsize 変数領域サイズを指定します。 後ろにKを付けることでキロバイト単位指定も出来ます。 256バイト未満の時は256バイトとなります。上限は1024Kまでです。 デフォルトは1024バイトです。 1変数に付き6バイト+変数名長+1バイト消費します(整数/実数とも変わりません)。 従って、たくさん変数を使う時、長い名前の変数を使うと時は拡張が必要です。 (指定は変数領域のみですが、それに従って付随の領域も自動的に確保されますので、 指定した以上のメモリーが消費されます。) 「例」 /W1024 1024バイト確保 /W1k 1Kバイト(=1024バイト)確保 /P デフォルトの表示を符号なしにします 実数モードでは無効です。 指定のない時は符号ありがデフォルトです。 (起動後も切り替え可能。) /Smode デフォルトの表示進数を変更します。 指定のない時は10進数表示がデフォルトです。 (起動後も切り替え可能。) modeには0,1,2,3を指定します。 0=10進数 1=16進数 2=2進数 3=8進数 ┌───────────────────────────────────┐ │組み込み時のエラー │ └───────────────────────────────────┘ ASKDen組み込み/解除時に発生する可能性の有るエラーは次の通りです。 「ASK v3/codeAではありません」 ASKDenはASK Ver3またはcodeAでしか使えません。FEPを調べてください。 もしくはASK Ver3/codeAが組み込まれていません。 「アクセサリ「〜」が登録できません」 ASKDenがASK/codeAに登録出来ません。 (ASKDenは2つのアクセサリを組み込みます。) codeA.sysなら32まで登録出来ます。 「アクセサリ「〜」が削除できません」 何等かの理由でASK/codeAからASKDenが外せません。 もしくは常駐しているASKDenと今実行したASKDenのバージョンが違います。 「ワークエリアが確保出来ません」 変数エリアが確保出来ません。 「すでに常駐しています」 すでに常駐しているのに、再度常駐しようとしました。 「常駐していません」 ASKDenは常駐していません。従って解除もできません。 「EX68上では組み込めません」 ASKDen V2.1はEX68上では組み込めません。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 使い方 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 各アクセサリは、ASK/codeAが起動している(変換ラインが出ている)状態でのみ有効です。 インライン変換でも大丈夫です。 変換ラインに数値・変数・演算子を使った式を記述して起動します。 もしくはその入力をSHIFT+XF5で英数変換した後など(仮確定時)に起動します。 最終的に返ってくる数値は、最後に計算した結果です。 「基本記述」 基本的な記述は一般の数式と同じです。四則演算の他、論理演算や一部の演算や 関数を追加してあります。演算の優先順位も一般と同じです。(かっこ)付き 演算も可能です。 ・各項目の間は詰めてもスペース/タブを置いてもかまいません。 ・式はかなり複雑なものも計算しますが、余り複雑すぎるとエラーになります。 その時は変数を使って式を分割して下さい。 「応用記述」 ・式は'、'/','(またはその半角の'、'/',')で区切って連続することが出来ます。 ・式は、その1文字目が全角文字なら内部で半角に変換された後評価されます。 (先頭が半角文字の場合、半角化しません。) もちろん、最初から半角での入力も可能です。 「例」 入力 内部 v=1、B=2,v+B v=1、B=2,v+B v='A',B=2 そのまま(B=2がエラーになる) ・/I,/Fで式ファイルを指定してある場合は、変換ラインの式を評価する前に その式ファイルの内容を評価します。ただし、一番最初の起動時と、 変数クリア直後の起動時、ファイルが変更された時です。 ・'、',','(またはその全角)で始めた時は、最初に変数をクリアしてから実行します。 /I,/Fの式ファイルの読み込みはそのクリア後です。 この記述は式ファイル中では使えません。 ・先頭が?で始まる文字列は式ファイル名とみなして読み込みます。 ?で読み込んだ式ファイル中の変数は、定数にはなりません。 式ファイルへ引数を与えたい時は変数を使って下さい。 この記述は式ファイル中では使えません(多重読み込み出来ないということ)。 「例」 2+3 -> 5 10++ -> 11 ((1+2)*4)/2 -> 6 v1=7,v1 -> 7 V1=3,V2=5,V1+V2 -> 8 v1=1,v1=v1+v1,v1+7 -> 9 v1=h2=10 -> 10 v=10,v++ 11が返る v=10,v*10,v++ 11が返る(最後に計算されたのはv++だから) ?_1、BIT0+1 式ファイル_1を評価した後BIT0+1を計算します v=10,?_2 変数vに10を代入した後、式ファイル_2を評価します 'A'+1 'A'($8260)+1 = $8261が返る 先頭文字が半角なので、この行は半角化されません。 ,v=10,B=2,n=v+b 今までの変数を全て消してから新たに変数に登録します ┌───────────────────────────────────┐ │操作キー │ └───────────────────────────────────┘ CTRL+SHIFT+XF1 整数演算起動(計算) CTRL+SHIFT+XF2 実数演算起動(計算) 以下、XF1は実数時はXF2に読み換えて下さい。 リターン 決定 ESC 中断 ↑/SHIFT+XF1 10←16←2←8進数変換 ↓/XF1 10→16→2→8進数変換 1 10進数表示 6 16進数表示 2 2進数表示 8 8進数表示 表示進数が10進以外の時も前に進数を示す記号は($,%,@)は付きません。 + 符号なし表示 − 符号あり表示 XF5 結果数値全角−半角変換 F1 内部表現表示切り替え 実数時の10進以外での表示時に、数値を整数化して表示するか、 内部表現(IEEE表現)で表示するかを選択します。 整数化出来ない(数が大きすぎる等)の時は整数化しません。 F10 変数ダンプ 変数の内容を上記表示進数・内部表現で表示します。 変数が定義されていない時には何も表示しません。 変数ダンプの結果は表示だけです。キーバッファーには入りません。 「整数化について」 F1/F10での表示における整数化は次のような規則で行われます。 整数化 整数時 なし 実数時 内部表現表示 なし 普通表現表示 10進 なし その他 あり 整数化出来ない時はエラー付きで表示されます。 ┌───────────────────────────────────┐ │変換ラインシンボル │ └───────────────────────────────────┘ 変換ラインの右端に出るシンボルには次の意味があります。 [-02進/実数*] - 符号あり表示 + 符号無し表示(ただし実数10進表示時は常に符号あり) 02 2進数表示 08 8進数表示 10 10進数表示 16 16進数表示 整数 整数演算 実数 2/8/16進では整数化表示 実数* 2/8/16進では内部表現表示 ┌───────────────────────────────────┐ │ 演算中のエラー │ └───────────────────────────────────┘ 演算中にエラーが発生すると、以下のエラーメッセージとその発生場所を表示します。 (変換ラインに入りきらない時は右側が切れます。) 数値/変数がない 数値/変数が2つ続いている 演算子のみ 式が異常 式が複雑すぎる(数値/変数) 式が複雑すぎる(演算子) 式が複雑すぎる(括弧) (がない (の前に演算子がない ()内がない ()内の式が異常 )が足りない 数値に代入しようとした 文字コードが'で括られていない 式ファイルが見つからない 式が長すぎる 整数モードでしか使えない 実数モードでしか使えない オーバーフロー アンダーフロー 引数がおかしい 整数化出来ない 0で除算した 変数が未定義 未確定変数への代入がない 未確定変数には代入しか出来ない 変数名が長すぎる 変数はこれ以上定義出来ない 変数処理メモリーが足りない 変数が未確定 変数が2重定義された 変数名が異常 定数に代入する 変数の型が違う 未確定変数にアクセスした 未確定変数が残っている 変数エリアを越える それぞれの意味は各自判断して下さい(オイ)。 必ずしも適切なメッセージではないこともあります(オイオイ)。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 使える数値・演算子・変数 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 内部での演算は32ビットで行われます。 普通の演算は符号あり、整数のビット演算(‾,&,|,^,<<,>>,<<<,>>>)だけは符号なしで行われます。 実数演算結果、オーバーフロー(数が大きすぎる)やアンダーフロー(数が小さすぎる)が 発生する時はエラーになります。 整数演算では常に下位32ビットを取るためエラーは出ません。 オーバーフローを起こすと符号が変わることが多いので、それで解るでしょう(手抜き?) ┌───────────────────────────────────┐ │数値 │ └───────────────────────────────────┘ 「数値表現」 整数時 123 10進数(整数部のみ) '?' ''で囲まれた1文字のコード(2バイト文字も可能) $0〜F 16進数値 %0,1 2進数値 @0〜7 8進数値 10進以外は数値の途中に'_'を記述することが出来ます(セパレーター)。 実数時(整数の全ての表記に加えて) 1.23 整数桁+小数点+小数桁 0.123 1未満の数(0は省略出来ません。.123という表現は不可。) 1.23E02 E表現 123E-02 マイナスE表現 実数時でも10進数以外は使えますが、小数点/E付き表現は10進数のみでしか 表現出来ません。 「例」 65 $41 $0000_0041 %0100_0001 -%01 @101 'A' 'A' 'の後は全角文字コードも指定出来ますが、その場合、変換ラインの半角化をさせないように、 全体を半角文字で記述し、'の後ろだけ全角1文字を記述するようにする必要があります。 (もしくは、変換ラインの先頭が半角なら全体が半角化されないことを利用して下さい。) 「数値の範囲」 整数 符号なし 0〜4294967296 符号あり +2147483648〜−2147483647 実数 3.4*10-38〜1.2*1038 実数は単精度で有効桁数が6桁です。 有効桁数とは数字の確定される桁数で、小数点以下の桁数ではありません。 実数は10進数表示では常に符号ありです。 10進以外は常に符号無しです(だからシンボルの表示上は'+'です)。 ┌───────────────────────────────────┐ │変数 │ └───────────────────────────────────┘ 「変数名」 変数名は以下の規則に適合した32バイト以内の文字列です。 変数名はその長さのすべてを識別し、英大文字小文字は区別しません。 1文字目 英字、アンダーライン 2文字目以降 上記に加えて数字 「変数名に全く使えない文字」 次の文字は変数名に使えません。 また、関数名から始まる変数名も使えません。 2バイト文字(内部で半角に変換出来ないもの) 半角片仮名 コントロールコード 数値・演算子になる文字 かっこ ?(式ファイル指定) ;(コメント;式ファイル内のみ有効) "#,.:[]`{}‾ 「例」 PI2=10.01 使えない 関数PIがある API=10.01 使える 途中に含まれる場合は大丈夫 「変数の状態」 変数は、それが定義された時の起動モードによって属性が変わります。 それには次の種類があります。 整数モードで定義 整数変数 実数モードで定義 実数変数 起動時整数式ファイル内で定義 整数定数 起動時実数式ファイル内で定義 実数定数 普通の変数は、どちらのモードで最初の定義をされても、後の代入によって変化します。 (整数で最初定義した変数に後で実数を代入すれば実数変数になる。) 定数は再定義出来ません。即ち、後で値を変更することが出来ません。 「有効期間」 変数は一度定義されると、','で始める行でクリアするか、 ASKDenを解除するまで消えません。 従って、前に定義した変数は、次の起動時にも有効です。 整数・実数両変数は、他方のモードでも参照可能です。この場合、 整数変数は実数化、実数変数は整数化して読み込まれます。 ただし、整数化出来ない(数が大きすぎる等)の時はエラーになります。 「例」 整数変数 実数モードでの読み出し I=1 i=1.0 実数変数 整数モードでの読み出し f=1.01 f=1 f=1E20 エラー ┌───────────────────────────────────┐ │演算子 │ └───────────────────────────────────┘ 演算子には、単項演算子と2項演算子があり、それぞれには優先順位があります。 演算子はCのそれに似ていますが、違うものもあるので注意して下さい。 Cにないもの ** <<< >>> Cと違うもの 剰余¥ 比較・論理演算子は、結果が正しいときに1、正しくないときに0を返します。 一部の演算子は、整数時のみ/実数時のみのものがあります。注意して下さい。 (以下、特に記述の無いものは両方で使えます。) 「単項演算子」 - 負号 + 正号(省略可能) ++ +1 -- -1 ‾ 全ビット反転 整数のみ ! 論理NOT 単項演算子の内、符号と全ビット反転は数値/変数の前に付き、他はその後ろに付きます。 ++,--はCと異なり、変数の後ろに付けてもその変数の内容は変化しません。 その変数の内容の数値に対する演算であることに注意して下さい(STKと同じ)。 「2項演算子」 C的表記 = v1=v2 代入 C言語のように連続代入も出来ます + v1+v2 - v1-v2 * v1*v2 / v1/v2 ¥ v1%v2 剰余(余り) ** v1**v2 べき乗 v1V2 実数のみ & v1&v2 AND ビット演算 整数のみ | v1|v2 OR 整数のみ ^ v1^v2 XOR 整数のみ >> v1>>v2 シフト 整数のみ << v1<<v2 整数のみ >>> v1.ror.v2 ローテート 整数のみ <<< v1.rol.v2 整数のみ == v1==v2 比較演算子 != v1!=v2 >= v1>=v2 <= v1<=v2 > v1>v2 < v1<v2 && v1&&v2 論理AND || v1||v2 論理OR 「実数関数」(当然実数のみ) 全てv1=func(v2)の形式となります。 無意味なまでに関数が充実してます(^_^;) abs 絶対値 ceil 小数切上 fix 整数部 floor 小数切捨 frac 小数部 sgn 正負零 exp 指数関数 sqr 平方根 pi 円周率乗算 log10 常用対数 log2 対数(底2) log 自然対数 sin 正弦 cos 余弦 tan 正接 atanh 双曲逆正接 asin 逆正弦 acos 逆余弦 atan 逆正接 sinh 正弦 cosh 双曲余弦 tanh 双曲正接 「優先順位」 高 + - ‾ ! ++ -- (+ - は符号) ↑ 実数関数 | * / ¥ ** | + - (+ - は演算子) | >> << <<< >>> | == != > < >= <= ↓ && || 低 & | ^ 代入'='はどの演算子より優先順位が低いですが、代入が続く時は後の代入ほど 優先順位が高くなります(これにより"a=b=1"というような連続代入が可能になります)。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 式ファイル ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 式ファイルは、決まりきった計算や、変数に数値を入れて定数として使うためにあります。 変換ラインに記述出来る、?による式ファイル読み込み以外のすべての記述が可能です。 (要するに、式ファイルの多重読み込みは出来ないということです。) 改行で終わる1行が式の指定となります。 変換ラインと違い、この中ではすべて半角文字で記述します。 変換ラインと同じく、','で連続記述出来ます。 ';'で始まる行、空白行はコメントとなり、無視されます。 式ファイルは、毎起動時に読み込まれます。 従って、変更は起動毎に有効になります。 行数には上限はありませんが、変数を使う場合は起動時の変数エリア指定によります。 「例」 BIT0=$0001 BIT1=$0002 BIT2=$0004 BIT3=$0008 BIT15=BIT0<<15 式ファイル中の記述にエラーがある場合、そのエラーは起動時に検出されます。 これは、組み込み時に指定した式ファイルも同じです。 (式ファイル内容が実際に評価されるのは起動時だから。) ファイル名に決まりはありませんが、変換ラインへの入力の制約があるため、 入力しやすいものを選ぶのが良いです(サンプルのようなファイル名とか)。 式ファイルは整数、実数で同じものでも構いませんが、分けた方が良いでしょう。 「注意」 オプション/I,/Fで指定する式ファイルは、その読み込みタイミングの関係から ほとんど定数定義専用となります(変数がクリアされない限り再読み込み=評価しないから)。 ?で指定するものは、変数を引数にして特定計算を行わせることに使えます。 2つの式ファイルには微妙に違いが出るので注意して下さい。 「補足」 式ファイルの最後にEOFコード($1a)はなくても構いませんが、 改行無しでEOFが来た場合、その行は無視されます。 「例」 v1++[EOF] ... この行は無視される ↓ v1++ ... 行末は必ず改行にする [EOF] ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Den2Var.x ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ このプログラムは、現在のASKDen2で定義されている変数の内容を表示するものです。 コマンドラインから起動することで表示します。 表示はASKDen2のF10とほぼ同じです。 「起動オプション」 /P 符号なしで表示します デフォルトは符号あり表示です。実数変数では無効です。 /Smode 表示進数を変更します。 指定のない時は10進数表示です。 modeには0,1,2,3を指定します。 0=10進数 1=16進数 2=2進数 3=8進数 /N 実数を内部表示で表示します ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ お約束 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ (1)転載は、無料ネットへの場合、特に制限はありません。自由です。 有料ネットへの転載・ホームページへの掲載は「必ず事前に」ご連絡下さい。 各種メディアによる販売も個人/企業を問わず「必ず事前に」ご連絡下さい。 Q2ネットへの転載は「厳禁」です。 ASKDen内の一部ルーチンを転用した場合もこれに従います。 Windows環境でよくあるシェアウエアへの転用は堅く禁止します。 (フリーウエアとして発表するなら自由にOK。名前を書いてくれるとうれしいけど。) (2)このプログラムを使って発生したのいかなる問題にも、当方は関知しません。 演算精度が気になる時は電卓などで検算してください(^_^;)。 動かない・動作がおかしいと思う時は、LeDAまでお知らせ下さい。 また、こうした方が良い等のいろいろな御意見・御感想もお待ちしております。 けっこう複雑なプログラムなので、バグが残っている可能性は多いにあります。 これが、皆さんに、長く使っていただけるツールであることと、 このプログラムを使う、X68現役ユーザーが多いことを祈りながら・・・。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 連絡先 ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 満開ネット MKSX0424 E-Mail LeDA@osaka.email.ne.jp 以上ならよく連絡が付きますが、まれにしばらく通信出来なくなることがありますので、 気長にお待ち下さい。 LeDA